/**
 * 
 */
package ve.com.neometrica.inventario.web.bean;

import java.util.LinkedList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;

import org.apache.log4j.Logger;
import org.springframework.context.annotation.Scope;

import ve.com.neometrica.inventario.api.model.Inventario;
import ve.com.neometrica.inventario.api.model.Marca;
import ve.com.neometrica.inventario.api.model.Producto;

/**
 * @author a.cabrera
 *
 */
@ManagedBean(name="inventarioBean")
@SessionScoped
public class InventarioBean extends AdministrarBean {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1310417865435225344L;

	private static final Logger log = Logger.getLogger(InventarioBean.class);
	
	private List<Producto> productos;
	private List<SelectItem> productoSelect;
	private String productoseleccionadaId;
	private Inventario inventario;
	

	public InventarioBean() {
	}
	
    @Override
    protected void init() {
    	this.inventario=new Inventario();
    	this.productos=this.getProductoService().getForCombo();
    	procesarListas();
    }
    
    private void procesarListas(){
    	if(productoSelect==null){
    		this.productoSelect=new LinkedList<SelectItem>();
    		for (Producto p : productos) {
    			SelectItem s=new SelectItem(p.getId(), p.getEtiqueta());
    			productoSelect.add(s);
    		}
    	}    	
    }

    public void save(){
    	log.info("llego a guardar");
    	if(validarCarga()){
    		for (Producto p : this.productos) {
				if(p.getId().equals(Integer.valueOf(productoseleccionadaId))){
					inventario.setProducto(p);
				}
			}
    		this.getInventarioService().save(inventario);
    		generarOk("productosaveok");
    		inventario=new Inventario();
    		productoseleccionadaId="";
    		getSessionBean().setMostrarMensajeOk(Boolean.TRUE);
    	}else{
    		//generar mensaje de error
    		getSessionBean().setMostrarMensajeOk(Boolean.FALSE);
    	}
    }
    private Boolean validarCarga(){
    	log.info("inicio validar");
    	Boolean resultado=Boolean.TRUE;
    	resultado=productoseleccionadaId.equals("-1")?!generarError("errorproductoseleccion")  :resultado;//debo generar el error tambien
    	resultado=!(inventario.getCantidad()!=null&&inventario.getCantidad()>0)?!generarError("errorcantidadiventario"):resultado;//TODO debo generar un error para mostrar
    	log.info("fin validar");
    	return resultado;
    }
	public List<Producto> getProductos() {
		return productos;
	}

	public void setProductos(List<Producto> productos) {
		this.productos = productos;
	}

	public List<SelectItem> getProductoSelect() {
		return productoSelect;
	}

	public void setProductoSelect(List<SelectItem> productoSelect) {
		this.productoSelect = productoSelect;
	}

	public String getProductoseleccionadaId() {
		return productoseleccionadaId;
	}

	public void setProductoseleccionadaId(String productoseleccionadaId) {
		this.productoseleccionadaId = productoseleccionadaId;
	}

	public Inventario getInventario() {
		return inventario;
	}

	public void setInventario(Inventario inventario) {
		this.inventario = inventario;
	}
    
	
}
